// miniprogram/views/store/list/list.js
var db = wx.cloud.database();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    store: [],
    numArray: [2, 3, 4, 5, 6, 8, 9, 10]
  },
  Rad: function (d) { //根据经纬度判断距离
    return d * Math.PI / 180.0;
  },
  getDistance: function (lat1, lng1, lat2, lng2) {
    // lat1用户的纬度
    // lng1用户的经度
    // lat2商家的纬度
    // lng2商家的经度
    var radLat1 = this.Rad(lat1);
    var radLat2 = this.Rad(lat2);
    var a = radLat1 - radLat2;
    var b = this.Rad(lng1) - this.Rad(lng2);
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378.137;
    s = Math.round(s * 10000) / 10000;
    s = s.toFixed(2); //+ 'km' //保留两位小数
    console.log('经纬度计算的距离:' + s + ',' + lat2 + ',' + lng2)
    return parseFloat(s);
  },
  findMap: function (e) {

    var idx = e.currentTarget.dataset.index;
    if (this.data.store[idx].location.coordinates == undefined) {
      wx.showToast({
        title: '无法获取您当前的位置,不能提供导航服务',
        icon: "none"
      })
      return;
    }
    var lat = this.data.store[idx].location.coordinates[0];
    var name = this.data.store[idx].storeName;
    var lnt = this.data.store[idx].location.coordinates[1];

    wx.openLocation({
      latitude: lat, //要去的纬度-地址
      longitude: lnt, //要去的经度-地址
      name: name,
      scale: 14,
      success: function (e) {
        console.log(e);
      },
      fail: function (e) {
        console.log(e);
      }
    })

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

    var that = this;
    wx.getLocation({
      type: 'wgs84',
      success(res) {
        const latitude = res.latitude; //纬度
        const longitude = res.longitude; //经度
        const speed = res.speed;
        const accuracy = res.accuracy;
        console.log(res.latitude, res.longitude);
        db.collection("store").get().then(x => {

          x.data.forEach(function (item, index) {
            var n = (Math.random() / 300).toFixed(4);
            x.data[index].location = {
              "type": "point",
              "coordinates": [latitude + parseFloat(n), longitude - parseFloat(n)]
            }
            //x.data[index].location.longitude = ;
            // "type": "Point",
            // "coordinates": [1.0, 1.0]
            x.data[index].distance = that.getDistance(latitude, longitude,
              latitude + parseFloat(n), longitude - parseFloat(n));
// var url="http://api.map.baidu.com/geocoder/v2/?ak=btsVVWf0TM1zUBEbzFz6QqWF&callback=renderReverse&location='"
// + (latitude + parseFloat(n)) + "," + (longitude - parseFloat(n)) + "&output=json&pois=1";
// console.log(url);
            // wx.request({
            //   url: '',
            //   data: {},
            //   header: {
            //     'Content-Type': 'application/json'
            //   },
            //   success: function (ops) {
            //     console.log(ops.data)
            //   }
            // })

            console.log(x.data[index].distance);
          });

          function compare(arg) {
            return function (a, b) {
              return a[arg] - b[arg];
            }
          }
          x.data = x.data.sort(compare('distance'));

          that.setData({
            store: x.data
          });
        });
      },
      fail: function (res) {
        console.log(res);
        db.collection("store").get().then(x => {
          that.setData({
            store: x.data
          });
        });
      }
    })
    // wx.getSetting({
    //   success(res) {
    //     if (res.authSetting['scope.userLocation']) {
    //       用户已经同意授权
    //       必须是在用户已经授权的情况下调用
    //       wx.getLocation({
    //         type: 'wgs84',
    //         success(res) {
    //           const latitude = res.latitude;
    //           const longitude = res.longitude;
    //           const speed = res.speed;
    //           const accuracy = res.accuracy;
    //           console.log(res);
    //         },
    //         fail:function(res)
    //         {
    //           console.log(res);
    //         }
    //       })
    //     }
    //   }
    // });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})